home *** CD-ROM | disk | FTP | other *** search
/ HTBasic 9.3 / HTBasic 9.3.iso / LgcyPlus / disk2 / TOGGLBTN._ / TOGGLBTN.
Encoding:
Text File  |  2001-03-02  |  3.8 KB  |  114 lines

  1. 10    ! **********************************************************
  2. 20    ! Example: TOGGLEBUTTON Widget
  3. 30    !
  4. 40    ! This program uses a TOGGLEBUTTON widget. It provides a
  5. 50    ! row of TOGGLEBUTTONS and lists the button and its state
  6. 60    ! as the button is pressed.
  7. 70    !
  8. 80    ! **********************************************************
  9. 90    !
  10. 100   ! Define colors:
  11. 110   !
  12. 120   INTEGER Black,White,Red,Yellow,Green,Cyan,Blue,Magenta
  13. 130   DATA 0,1,2,3,4,5,6,7
  14. 140   READ Black,White,Red,Yellow,Green,Cyan,Blue,Magenta
  15. 150   !
  16. 160   INTEGER Sts                   ! Gets TOGGLEBUTTON value
  17. 170   DIM V1$[1],V2$[1],V3$[1]      ! Converts value to string
  18. 180   !
  19. 190   INTEGER Nlines,D(1:4)         ! Used for display handling
  20. 200   INTEGER Dw,Dh                 ! Gives display size
  21. 210   INTEGER X,Y,Pw,Ph,Iw,Ih       ! PANEL parameters
  22. 220   INTEGER R1,R2,C1,C2,C3        ! Coordinates for widgets
  23. 230   INTEGER Bh,Bw,Lw              ! Widget sizes
  24. 240   !
  25. 250   STATUS CRT,13;Nlines
  26. 260   GESCAPE CRT,3;D(*)
  27. 270   Dw=D(3)-D(1)
  28. 280   Dh=(D(4)-D(2))*((Nlines-7)/Nlines)
  29. 290   !
  30. 300   Ph=170               ! Interior height
  31. 310   Pw=280               ! Interior width
  32. 320   X=(Dw-Pw)/2          ! Center panel on screen
  33. 330   Y=(Dh-Ph)/2
  34. 340   !
  35. 350   CLEAR SCREEN
  36. 360   ASSIGN @Panel TO WIDGET "PANEL";SET ("VISIBLE":0)
  37. 370   CONTROL @Panel;SET ("MAXIMIZABLE":0,"RESIZABLE":0)
  38. 380   CONTROL @Panel;SET ("X":X,"Y":Y,"WIDTH":Pw,"HEIGHT":1.2*Ph)
  39. 390   CONTROL @Panel;SET ("TITLE":" Example: TOGGLEBUTTON Widget")
  40. 400   CONTROL @Panel;SET ("SYSTEM MENU":"Quit")
  41. 410   !
  42. 420   ! Determine inside dimensions of PANEL
  43. 430   !
  44. 440   STATUS @Panel;RETURN ("INSIDE WIDTH":Iw,"INSIDE HEIGHT":Ih)
  45. 450   !
  46. 460   Gaph=Ih*.04
  47. 470   Gapw=Iw*.03
  48. 480   Bh=(Ih-3*Gaph)/2     ! Button height
  49. 490   Bw=(Iw-4*Gapw)/3     ! Button width
  50. 500   R1=Gaph              ! Top row
  51. 510   R2=R1+Bh+Gaph        ! Row 2 = row 1 + button height + gap
  52. 520   C1=Gapw              ! Left column
  53. 530   C2=C1+Bw+Gapw        ! Col 2 = col 1 + button width + gap
  54. 540   C3=C2+Bw+Gapw        ! Col 3 = col 2 + button width + gap
  55. 550   Lw=Bw*3+Gapw*2       ! Label width = 3 buttons plus gaps
  56. 560   !
  57. 570   ! Set up TOGGLEBUTTONS
  58. 580   !
  59. 590   ASSIGN @T1 TO WIDGET "TOGGLEBUTTON";PARENT @Panel
  60. 600   CONTROL @T1;SET ("X":C1,"Y":R1,"WIDTH":Bw,"HEIGHT":Bh)
  61. 610   CONTROL @T1;SET ("PEN":Blue)
  62. 620   CONTROL @T1;SET ("LABEL":"T1")
  63. 630   !
  64. 640   ASSIGN @T2 TO WIDGET "TOGGLEBUTTON";PARENT @Panel
  65. 650   CONTROL @T2;SET ("X":C2,"Y":R1,"WIDTH":Bw,"HEIGHT":Bh)
  66. 660   CONTROL @T2;SET ("PEN":Blue)
  67. 670   CONTROL @T2;SET ("LABEL":"T2")
  68. 680   !
  69. 690   ASSIGN @T3 TO WIDGET "TOGGLEBUTTON";PARENT @Panel
  70. 700   CONTROL @T3;SET ("X":C3,"Y":R1,"WIDTH":Bw,"HEIGHT":Bh)
  71. 710   CONTROL @T3;SET ("PEN":Blue)
  72. 720   CONTROL @T3;SET ("LABEL":"T3")
  73. 730   !
  74. 740   ! Create LABEL widget
  75. 750   !
  76. 760   ASSIGN @Label TO WIDGET "LABEL";PARENT @Panel
  77. 770   CONTROL @Label;SET ("X":C1,"Y":R2,"WIDTH":Lw,"HEIGHT":Bh)
  78. 780   CONTROL @Label;SET ("PEN":Red)
  79. 790   !
  80. 800   ! Set up events
  81. 810   !
  82. 820   ON EVENT @T1,"CHANGED" GOSUB Handler
  83. 830   ON EVENT @T2,"CHANGED" GOSUB Handler
  84. 840   ON EVENT @T3,"CHANGED" GOSUB Handler
  85. 850   ON EVENT @Panel,"SYSTEM MENU" GOTO Finis
  86. 860   !
  87. 870   ! Turn on PANEL
  88. 880   !
  89. 890   GOSUB Handler
  90. 900   CONTROL @Panel;SET ("VISIBLE":1)
  91. 910   !
  92. 920   ! Main loop, wait for event
  93. 930   !
  94. 940   LOOP
  95. 950     WAIT FOR EVENT
  96. 960   END LOOP
  97. 970   STOP
  98. 980   !
  99. 990   ! Handlers for buttons
  100. 1000  !
  101. 1010 Handler: !
  102. 1020  STATUS @T1;RETURN ("VALUE":Sts)
  103. 1030  V1$=VAL$(Sts)
  104. 1040  STATUS @T2;RETURN ("VALUE":Sts)
  105. 1050  V2$=VAL$(Sts)
  106. 1060  STATUS @T3;RETURN ("VALUE":Sts)
  107. 1070  V3$=VAL$(Sts)
  108. 1080  CONTROL @Label;SET ("VALUE":"T1:"&V1$&" / T2:"&V2$&" / T3:"&V3$)
  109. 1090  RETURN
  110. 1100  !
  111. 1110 Finis: !
  112. 1120  ASSIGN @Panel TO *    ! Delete PANEL widget
  113. 1130  END
  114.